/// <reference path="../Scripts/typings/jquery/jquery.d.ts" />
interface Array<T> {
    last: any;
}
/**
* @namespace
*/
declare module MobileEntree {
    /**
    * Utilities for use with Mobile Entree applications.
    */
    class Utility {
        static IsNullOrUndefined(obj: any): boolean;
        /**
        * Determines if an object is null/undefined or is empty - determined by obj.length.
        * @param obj
        * @returns {boolean}
        */
        static IsNullOrEmpty(obj: any): boolean;
        /**
        *
        * @param {ObjectModel.ScopeObject} scope Current scope object.
        * @param {ObjectModel.ListView[]} output Current output object.
        * @param {number} panelIndex Optional index to be assigned to the added ListView, if not specified it is generated based on existing ListViews.
        * @returns {ObjectModel.ListView}
        */
        static AddPanel(scope: ObjectModel.ScopeObject, output: ObjectModel.ListView[], panelIndex?: number): ObjectModel.ListView;
    }
    /**
    * Provides enums and enumerations of default available styles.
    */
    module Enumerations {
        /**
        * Available values for {ObjectModel.ClickAction.AnimationStyle}
        */
        class AnimationStyles {
            static None: string;
            static SlideLeft: string;
            static SlideRight: string;
            static SlideUp: string;
            static SlideDown: string;
            static DropLeft: string;
            static DropRight: string;
            static DropUp: string;
            static DropDown: string;
            static DropFlipXUp: string;
            static DropFlipXDown: string;
            static DropFlipYForward: string;
            static DropFlipYBack: string;
            static SwapLeft: string;
            static SwapRight: string;
            static SwapUp: string;
            static SwapDown: string;
            static SinkLeft: string;
            static SinkRight: string;
        }
        /**
        * Available values for {@link MobileEntree.ObjectModel.ListItem.ItemStyle}.
        */
        class ListItemStyles {
            static Default: string;
            static TitleCaptionImage: string;
            static NameValue: string;
            static Billboard: string;
            static Pager: string;
            static Calendar: string;
            static CalendarItem: string;
        }
        /**
        * Available values for {@ MobileEntree.ObjectModel.ListGroup.ItemStyle}.
        */
        class ListGroupStyles {
            static Default: string;
            static Buttons: string;
            static Calendar: string;
        }
        /**
        * Available values for {@link MobileEntree.ObjectModel.FormItem.ItemStyle}.
        */
        class FormItemStyles {
            static Default: string;
            static Text: string;
            static Note: string;
            static Select: string;
            static Checkbox: string;
            static Radio: string;
            static Number: string;
            static Date: string;
            static Time: string;
            static Month: string;
            static File: string;
        }
        /**
        * Available values for {@link MobileEntree.ObjectModel.FormItem_Text.InputType}.
        */
        class InputType {
            static Text: string;
            static Password: string;
            static Email: string;
        }
        /**
        * Available values for {@link MobileEntree.ObjectModel.ListView.ItemStyle}.
        */
        class ListViewStyles {
            static Default: string;
            static ContextMenu: string;
        }
        /**
        * Available values for {@link MobileEntree.ObjectModel.IExpandableItem.State}.
        */
        class ExpandableItemState {
            static Open: string;
            static Closed: string;
            static Hidden: string;
            static AlwaysOpen: string;
        }
        /**
        * Available values for {@link MobileEntree.ObjectModel.ClickAction.TargetType}.
        */
        class ClickActionTargetType {
            /**
            * Default target
            */
            static Default: string;
            /**
            * Loads next screen in Context Menu
            */
            static ContextMenu: string;
            /**
            * For use in multi panel environment: string = ""; loads next screen in current panel instead of target.
            */
            static Self: string;
            /**
            * Not current used.
            */
            static Transfer: string;
        }
        /**
        * Available values for {@link MobileEntree.ObjectModel.ClickAction.ItemStyle}. Defines the template used to render the {@link MobileEntree.ObjectModel.ClickAction}.
        */
        class ClickActionStyles {
            static Default: string;
            static GoToUrl: string;
        }
        /**
        * Available values for {@link MobileEntree.ObjectModel.ActionItem.ItemStyle}. Defines the template used to render the {@link MobileEntree.ObjectModel.ActionItem}.
        */
        class ActionItemStyles {
            static Default: string;
            static HomeBar: string;
            static ContextMenuHomeBar: string;
            static BackButton: string;
        }
        /**
        * Available values for {@link MobileEntree.ObjectModel.ActionLane.ItemStyle}. Defines the template used to render the {@link MobileEntree.ObjectModel.ActionLane}.
        */
        class ActionLaneStyles {
            static Default: string;
            static LargeIcon: string;
            static SmallIcon: string;
            static TextOnly: string;
            static VerticalText: string;
        }
    }
    module ObjectModel {
        /**
        * Represents the parameters passed in the current url.
        */
        class QueryStringObject {
            constructor();
        }
        interface IClickable {
            ClickAction: ClickAction;
            Selected: boolean;
        }
        interface IPropertyContainer {
            Properties: {
                [key: string]: any;
            };
        }
        interface IScopedActionObject {
            Sequence: number;
            LaneId: string;
        }
        interface IExpandableItem {
            Expandable: boolean;
            State: string;
        }
        interface ISerializeable {
            OnSerializing(): any;
        }
        interface IStyleableItem {
            ItemStyle: string;
        }
        /**
        * Base class for items containing a property bag.
        */
        class PropertyContainer implements IPropertyContainer, ISerializeable {
            /**
            * Property bag.
            */
            public Properties: {
                [key: string]: any;
            };
            /**
            *
            * @param properties - Optional properties to initialize with, null to intialize with empty object.
            * @constructor
            */
            constructor(properties?: {
                [key: string]: any;
            });
            /**
            * Called before item is 'serialized' in this case before it's pushed to ME via the postMessage. Override to set properties before being sent.
            */
            public OnSerializing(): void;
            public _setPropertyValue(key: string, value: any): void;
        }
        /**
        * Base class for items with a Name and Value.
        */
        class NameValuePair<T> {
            /**
            *
            * @param name - Name of the item.
            * @param value - Value of the item.
            * @constructor
            */
            constructor(name?: string, value?: T);
            public Name: string;
            public Value: T;
        }
        /**
        * Represents an Option (<option/>) in choice based form element. See {@link MobileEntree.ObjectModel.FormItem_Choice}.
        */
        class OptionItem extends NameValuePair<string> {
            /**
            *
            * @param name - Display name of the item.
            * @param value - Value of the item.
            * @param selected - Determines is the item is currently selected in the form element.
            * @constructor
            */
            constructor(name?: string, value?: string, selected?: boolean);
            /**
            * String value of selected property. Used by framework.
            */
            public SelectedString: string;
            /**
            * Gets a value that represents if the item is selected in the form element.
            * @returns {boolean}
            */
            /**
            * Sets a value that determines if the items is selected in the form element.
            * @param value
            */
            public Selected : boolean;
        }
        /**
        * Represents meta data that determines how a number field is rendered and functions. See {@link MobileEntree.ObjectModel.FormItem_Number}.
        */
        class SPFieldNumberMetaData {
            /**
            *
            * @param decimals {@link #Decimals}
            * @param max {@link #Max}
            * @param min {@link #Min}
            * @param percentage {@link #Percentage}
            * @param step {@link #Step}
            * @constructor
            */
            constructor(decimals?: number, max?: number, min?: number, percentage?: boolean, step?: number);
            /**
            * Represents the precision of the number - the amount of numbers to the right of the decimal point.
            */
            public Decimals: number;
            /**
            * Maximum value of the field.
            */
            public Max: number;
            /**
            * Minimum value of the field.
            */
            public Min: number;
            /**
            * Indicates if the field is represented as a percent value.
            */
            public Percentage: boolean;
            /**
            * Indicates the step value when incrementing or decrementing the value of the field.
            */
            public Step: number;
        }
        /**
        * Base class for items containing an ItemStyle property.
        */
        class StyleableItem extends PropertyContainer implements IStyleableItem {
            constructor(properties?: {
                [key: string]: any;
            });
            /**
            * Style (template) which will be applied to the item. See (@link MobileEntree.Enumerations} for available values for different item types.
            */
            public ItemStyle: string;
        }
        /**
        *  Base class representing a item in a list.
        */
        class ListItem extends StyleableItem implements IClickable {
            /**
            *
            * @param properties - Optional properties to initialize the object with.
            * @constructor
            */
            constructor(properties?: {
                [key: string]: any;
            });
            /**
            * Defines properties which determine the action to take when the item is clicked.
            */
            public ClickAction: ClickAction;
            /**
            * Determines if the item is currently selected (highlighted).
            */
            public Selected: boolean;
        }
        /**
        * Represents an item with a Title property.
        */
        class ListItem_Title extends ListItem {
            /**
            *
            * @param title - Optional value to initialize the Title property with.
            * @param properties - Optional value to initialize the {@link #Properties} bag with.
            * @constructor
            */
            constructor(title?: string, properties?: {
                [key: string]: any;
            });
            /**
            * Gets the Title of the item.
            * @returns {string}
            */
            /**
            * Sets the title of the item.
            * @param value - Value to assign to the Title property.
            */
            public Title : string;
        }
        /**
        * Base class for items which contain a child collection. Consider class as abstract.
        */
        class ContainerItem<T extends StyleableItem> extends ListItem_Title {
            constructor(title?: string, properties?: {
                [key: string]: any;
            });
            /**
            * Returns the collection of child items. Override in order for EnsureChildren to automatically walk child collections.
            * @returns {Array<T>}
            * @private
            */
            public _children : T[];
            /**
            * Walks child collections in order to ensure the ItemStyle property. Override in order to check other properties.
            * @param parent - Item parent.
            */
            public EnsureChildren(parent?: ListItem_Title): void;
        }
        /**
        * Represents the scope (context) of the current request.
        * @class ScopeObject
        */
        class ScopeObject extends PropertyContainer {
            /**
            *
            * @param panelCount Number of panels available for the current UserAgent.
            * @param panelIndex Index of the panel currently being rendered.
            * @param properties Properties related to the current request. @see PropertyContainer
            * @constructor
            * @alias class:ScopeObject
            */
            constructor(panelCount: number, panelIndex: number, properties?: {
                [key: string]: any;
            });
            /**
            * Contains information related to the current GeoLocation, null if not specified to be obtained in the previous {@link ObjectModel:ClickAction}.
            */
            public Location: any;
            /**
            * Number of Panels available for the current request and UserAgent.
            */
            public PanelCount: number;
            /**
            * Index of the Panel currently being rendered.
            */
            public PanelIndex: number;
        }
        /**
        * Represents an item with a Title an Caption.
        */
        class ListItem_TitleCaption extends ListItem_Title {
            /**
            *
            * @param title - Optional value to initialize the Title property with.
            * @param caption - Optional value to initialize the Caption property with.
            * @param properties - Optional value to initialize the {@link #Properties} bag with.
            * @constructor
            */
            constructor(title?: string, caption?: string, properties?: {
                [key: string]: any;
            });
            /**
            * Gets the value of the Caption property.
            * @returns {string}
            */
            /**
            * Sets the value of the Caption property.
            * @param value - Value to assign to the Caption.
            */
            public Caption : string;
        }
        /**
        * Represents an item with a Title and Image.
        */
        class ListItem_TitleImage extends ListItem_Title {
            /**
            *
            * @param title - Optional value to initialize the Title property with.
            * @param imageUrl - Optional value to initialize the ImageUrl property with.
            * @param properties - Optional value to initialize the {@link #Properties} bag with.
            * @constructor
            */
            constructor(title?: string, imageUrl?: string, properties?: {
                [key: string]: any;
            });
            /**
            * Gets the value of the ImageUrl property.
            * @returns {string}
            */
            /**
            * Sets the value of the ImageUrl property.
            * @param value - Value to assign to the ImageUrl property.
            */
            public ImageUrl : string;
        }
        /**
        * Represents an item with a Title, Caption and Image.
        */
        class ListItem_TitleCaptionImage extends ListItem_TitleCaption {
            /**
            *
            * @param title - Optional value to initialize the Title property with.
            * @param caption - Optional value to initialize the Caption property with.
            * @param imageUrl - Optional value to initialize the ImageUrl property with.
            * @param properties - Optional value to initialize the {@link #Properties} bag with.
            * @constructor
            */
            constructor(title?: string, caption?: string, imageUrl?: string, properties?: {
                [key: string]: any;
            });
            /**
            * Gets the value of the ImageUrl property.
            * @returns {string}
            */
            /**
            * Sets the value of the ImageUrl property.
            * @param value - Value to assign to the ImageUrl property.
            */
            public ImageUrl : string;
        }
        /**
        * Represents an item with a Name and Value.
        */
        class ListItem_NameValue extends ListItem {
            /**
            *
            * @param name - Optional value to initialize the Name property with.
            * @param value - Optional value to initialize the Value property with.
            * @param properties - Optional value to initialize the {@link #Properties} bag with.
            * @constructor
            */
            constructor(name?: string, value?: string, properties?: {
                [key: string]: any;
            });
            /**
            * Gets the value of the Name property.
            * @returns {string}
            */
            /**
            * Sets the value of the Name property.
            * @param value
            */
            public Name : string;
            /**
            * Gets the value of the Value property.
            * @returns {string}
            */
            /**
            * Sets the value of the Value property.
            * @param value
            */
            public Value : string;
        }
        /**
        * Represents and item that contains HTML markup which is rendered in-line.
        */
        class ListItem_Billboard extends ListItem {
            /**
            *
            * @param content - Optional value to initialize the Content property with.
            * @param properties  - Optional value to initialze the {@link #Properties} bag with.
            * @constructor
            */
            constructor(content?: string, properties?: {
                [key: string]: any;
            });
            /**
            * Gets the value of the Content property - the HTML content to be rendered.
            * @returns {string}
            */
            /**
            * Sets the value of the Content property - the HTML content to be rendered.
            * @param value
            */
            public Content : string;
        }
        /**
        * Represents a pager (Show More...) item.
        */
        class ListItem_Pager extends ListItem_Title {
            /**
            *
            * @param title Optional value to initialize the Title property with.
            * @param properties Optional value to initialize the {@link #Properties} bag with.
            * @constructor
            */
            constructor(title?: string, properties?: {
                [key: string]: any;
            });
        }
        /**
        * Represents a item which is displayed as a monthly calendar.
        */
        class ListItem_Calendar extends ListItem {
            /**
            *
            * @param value Optional value to initialize the Value property with.
            * @param items Optional value to initialize the Items array with.
            * @param properties Optional value to initialize the {@link #Properties} bag with.
            * @constructor
            */
            constructor(value?: Date, items?: ListItem_CalendarItem[], properties?: {
                [key: string]: any;
            });
            /**
            * Gets the current value of the item.
            * @returns {Date}
            */
            /**
            * Sets the current value of teh item.
            * @param value
            */
            public Value : Date;
            /**
            * Gets the collection of items in the Calendar.
            * @returns {Array}
            */
            /**
            * Sets the collection of items in the Calendar.
            * @param value Value to assign to the Items property.
            */
            public Items : ListItem_CalendarItem[];
            public OnSerializing(): void;
        }
        /**
        * Represents an item in a Calendar control.
        */
        class ListItem_CalendarItem extends ListItem_Title {
            /**
            *
            * @param title Optional value to initialize the Title property with.
            * @param caption Optional value to initialize the Caption property with.
            * @param startDate Optional value to initialize the StartDate property with.
            * @param endDate Optional value to initialize the EndDate property with.
            * @param allDayEvent Optional value to initialize the AllDayEvent property with.
            * @param properties Optional value to initialize the {@link #Properties} bag with.
            * @constructor
            */
            constructor(title?: string, startDate?: Date, endDate?: Date, allDayEvent?: boolean, properties?: {
                [key: string]: any;
            });
            /**
            * Gets the Start Date of the item.
            * @returns {Date}
            */
            /**
            * Sets the Start Date of the item.
            * @param value Value to assign to the StartDate.
            */
            public StartDate : Date;
            /**
            * Gets the End Date of the item.
            * @returns {Date}
            */
            /**
            * Sets the End Date of the item.
            * @param value Value to assign to the EndDate property.
            */
            public EndDate : Date;
            /**
            * Gets a value that indicates if the item is an All Day Event.
            * @returns {boolean}
            */
            /**
            * Sets a value that indicates if the item is an All Day Event.
            * @param value Value to assign to the AllDayEvent property.
            */
            public AllDayEvent : boolean;
        }
        /**
        * Represents a container for {@link MobileEntree.ObjectModel.ListItem} objects.
        */
        class ListGroup extends ContainerItem<ListItem> implements IExpandableItem {
            /**
            *
            * @param title - Optional value to instantiate Title property with.
            * @param items - Optional array of {@link MobileEntree.ObjectModel.ListItem} to instantiate the group with.
            * @param properties - Optional properties to initialize with, null to initialize with empty object.
            */
            constructor(title?: string, items?: ListItem[], properties?: {
                [key: string]: any;
            });
            /**
            * Gets the class applied to the group ('<div/>') in rendered HTML.
            * @returns {*}
            */
            /**
            * Sets the class applied to the group ('<div/>') in rendered HTML.
            * @param value
            */
            public CSSClass : string;
            /**
            * Gets the value of the message displayed when a group is rendered with no items.
            * @returns {*}
            */
            /**
            * Sets the value of the message displayed when a group is rendered with no items.
            * @param value
            */
            public EmptyGroupMessage : string;
            /**
            * See {@link MobileEntree.ObjectModel.IExpandableItem.Expandable}.
            * @returns {*}
            */
            /**
            * See {@link MobileEntree.ObjectModel.IExpandableItem.Expandable}.
            * @param value
            */
            public Expandable : boolean;
            /**
            * See {@link MobileEntree.ObjectModel.IExpandableItem.State}.
            * @returns {*}
            */
            /**
            * See {@link MobileEntree.ObjectModel.IExpandableItem.State}.
            * @param value
            */
            public State : string;
            /**
            * Gets the Title of the ListGroup.
            * @returns {*}
            */
            /**
            * Sets the Title of the ListGroup.
            * @param value
            * @constructor
            */
            public Title : string;
            /**
            * Items contained by this group.
            */
            public ListItems: ListItem[];
            /**
            * See {@link MobileEntree.ObjectModel.ContainerItem._children}
            * @returns {Array<ListItem>}
            */
            public _children : ListItem[];
        }
        /**
        * Represents a {@link ListGroup} which has it's {@link ListGroup.ListItems} rendered as a group of buttons instead of a list.
        */
        class ListGroup_Buttons extends ListGroup {
            constructor(title?: string, items?: ListItem[], properties?: {
                [key: string]: any;
            });
        }
        /**
        * {@link ListGroup} used as the container for a {@link ListItem_Calendar}.
        */
        class ListGroup_Calendar extends ListGroup {
            constructor(title?: string, items?: ListItem[], properties?: {
                [key: string]: any;
            });
        }
        /**
        * Represents a list of {@link ListGroup} items.
        */
        class List extends ContainerItem<ListGroup> {
            /**
            * Used by framework.
            * @param spHostUrl
            * @param title
            * @param groups
            * @param properties
            */
            constructor(spHostUrl: string, title?: string, groups?: ListGroup[], properties?: {
                [key: string]: any;
            });
            public ListGroups: ListGroup[];
            public SPHostUrl: string;
            /**
            * Gets the Title of the list which is rendered as the page title.
            * @returns {*}
            */
            /**
            * Sets the Title of the list which is rendered as the page title.
            * @param value
            */
            public Title : string;
            public _children : ListGroup[];
            public EnsureChildren(parent?: ListItem_Title): void;
        }
        /**
        * Represents a screen in Mobile Entree.
        */
        class ListView extends ListItem_Title {
            /**
            * User by framework.
            * @param spHostUrl
            * @param title
            * @param properties
            */
            constructor(spHostUrl: string, title?: string, properties?: {
                [key: string]: any;
            });
            public ActionTray: ActionTray;
            public Data: List;
            /**
            * Used by framework, should not be modified.
            */
            public DataViewId: string;
            /**
            * Determines if the {@link HomeBar} is rendered.
            */
            public EnableHomeBar: boolean;
            /**
            * See {@link HomeBar}.
            */
            public HomeBar: HomeBar;
            /**
            * The index of the panel this view is rendered in.
            */
            public PanelIndex: number;
            public EnsureChildren(): void;
        }
        /**
        * Represents the top bar on a rendered screen.
        */
        class HomeBar extends PropertyContainer {
            /**
            * Used by framework.
            * @param properties
            */
            constructor(properties?: {
                [key: string]: any;
            });
            /**
            * Used by framework, should not be modified.
            */
            static ActionLaneId: string;
            /**
            * Path to image used as the toggle button for the {@link ActionTray}.
            */
            public ActionTrayToggleIcon: string;
            /**
            * Collection of {@link ActionItem} items contained in the HomeBar.
            */
            public ActionItems: ActionItem[];
        }
        /**
        * Represents the tray containing {@link ActionLane} items on a screen.
        */
        class ActionTray extends ContainerItem<ActionLane> implements IExpandableItem {
            /**
            * Used by framework.
            */
            constructor();
            /**
            * See {@link MobileEntree.ObjectModel.IExpandableItem.State}.
            */
            public State: string;
            /**
            * See {@link MobileEntree.ObjectModel.IExpandableItem.Expandable}.
            * @returns {boolean} - Always true for ActionTray.
            */
            public Expandable : boolean;
            public ActionLanes: ActionLane[];
            public ActionItemCount: number;
            public _children : ActionLane[];
            public EnsureChildren(parent?: ListItem_Title): void;
        }
        /**
        * Represents a row in the {@link ActionTray}.
        */
        class ActionLane extends ContainerItem<ActionItem> implements IScopedActionObject {
            /**
            * Creates a new instance with the supplied parameters.
            * @param laneId - Optional value to initialize {@link #LandId} with.
            * @param items - Optional collection of {@link ActionItem} items to instantiate with.
            * @param sequence - Optional value to initialize {@link #Sequence} with.
            * @param properties - Optional value to initialize the {@link #Properties} bag with.
            */
            constructor(laneId?: string, items?: ActionItem[], sequence?: number, properties?: {
                [key: string]: string;
            });
            /**
            * Collection of {@link ActionItem} items contained by the lane.
            */
            public ActionItems: ActionItem[];
            /**
            * Determines ordering of lanes within the {@link ActionTray}.
            */
            public Sequence: number;
            /**
            * Unique Id of this lane.
            */
            public LaneId: string;
            public _children : ActionItem[];
        }
        /**
        * Represents an actionable item contained in the {@link HomeBar} or an {@link ActionLane}.
        */
        class ActionItem extends ListItem_TitleImage implements IScopedActionObject {
            /**
            * Creates a new instance of an {@link ActionItem} using the specified parameters.
            * @param actionLaneId - Optional value to instantiate {@link #LaneId} with.
            * @param title - Optional value to instantiate {@link Title} with.
            * @param sequence - Optional value to instantiate {@link Sequence} with.
            */
            constructor(actionLaneId?: string, title?: string, sequence?: number);
            /**
            * Determines the order of {@link ActionItem} items in their container.
            */
            public Sequence: number;
            public LaneId: string;
        }
        /**
        * Represent an {@link ActionItem} configured as a 'Back' button. Intended be added to {@link MobileEntree.ObjectModel.HomeBar.ActionItems} collection.
        */
        class ActionItem_Back extends ActionItem {
            /**
            * Creates a new instance with {@link #LaneId} set to {@link MobileEntree.ObjectModel.HomeBar.ActionLaneId}.
            * @param clickActionProperties - Optional collection of properties to add to the default {@link #ClickAction} Property bag.
            * @param clickActionState - Optional collection of values to add to the default {@link #ClickAction} State bag.
            */
            constructor(clickActionProperties?: {
                [name: string]: string;
            }, clickActionState?: string[]);
        }
        /**
        * Represent an {@link ActionItem} configured as a 'Home' button. Intended be added to {@link MobileEntree.ObjectModel.HomeBar.ActionItems} collection.
        */
        class ActionItem_Home extends ActionItem {
            /**
            * Creates a new instance of an {@link ActionItem} configured as a 'Home' button.
            * @param clickActionProperties - Optional collection of properties to add to the default {@link #ClickAction} Property bag.
            * @param clickActionState - Optional collection of values to add to the default {@link #ClickAction} State bag.
            */
            constructor(clickActionProperties?: {
                [name: string]: string;
            }, clickActionState?: string[]);
        }
        /**
        * Represents an action to be taken when an {@link IClickable} item is receives user interaction.
        */
        class ClickAction extends StyleableItem {
            /**
            * Creates a new instance of a {@link ClickAction} object with the supplied parameters.
            * @param properties - Optional value to instantiate {@link #Properties} bag with.
            * @param state - Optional value to instantiate {@link #State} bag with.
            */
            constructor(properties?: {
                [key: string]: any;
            }, state?: string[]);
            /**
            * Disables pushing this action into the history queue when it is invoked.
            * @default false
            */
            public DisableHistory: boolean;
            /**
            * The event attribute name in the rendered HTML.
            * @default 'onclick'
            * @example '<a onclick="{@link #EventAction}" .../>'
            */
            public EventName: string;
            /**
            * The value of this {@link #EventName} attribute in the rendered HTML. Allows changing the javascript function that is called when the action is invoked.
            * @example '<a {@link EventName}="MyCustomType.HandleClickAction(this);" .../>'
            */
            public EventAction: string;
            /**
            * Unique id of this action.
            */
            public Id: string;
            /**
            * Determines if geolocation data is attempted to be acquired and included with {@link ClickAction#Properties} when the action is invoked.
            * @default false
            */
            public IncludeGeoLocation: boolean;
            /**
            * Style of animation (see {@link MobileEntree.Enumerations.AnimationStyles}) shown when the action is invoked.
            * @default {@link MobileEntree.Enumerations.AnimationStyles.SlideLeft}
            */
            public AnimationStyle: string;
            /**
            * Contains url hash values split by '/' after action is invoked.
            */
            public State: string[];
            /**
            * Defines the target (see {@link MobileEntree.Enumerations.ClickActionTargetType}) to load the next {@link ListView} in after the action is invoked.
            * @default {@link MobileEntree.Enumerations.ClickActionTargetType.Default}
            */
            public TargetType: string;
            /**
            * Determines if form values are parsed and sent with {@link Properties} after the action is invoked.
            * @default false;
            */
            public ParseFormData: boolean;
        }
        /**
        * Represents a {@link ClickAction} that is a static link (anchor) to another page.
        */
        class ClickAction_GoTo extends ClickAction {
            /**
            * Create a new instance of a {@link ClickAction} configured with the supplied parameters.
            * @param targetUrl - Optional value to instantiate {@link #TargetUrl} with.
            * @param properties - Optional value to instantiate {@link #Properties} bag with.
            * @param state - Optional value to instantiate {@link #State} bag with.
            */
            constructor(targetUrl?: string, properties?: {
                [key: string]: any;
            }, state?: string[]);
            /**
            * Gets the target url (href) of the action.
            * @returns {*}
            */
            /**
            * Sets the target url (href) of the action.
            * @param value
            */
            public TargetUrl : string;
            /**
            * Gets the target window (target) of the action.
            * @returns {*}
            */
            /**
            * Sets the target window (target) of the action.
            * @param value
            */
            public TargetWindow : string;
        }
        /**
        * Represents a {@link ClickAction} configured to execute a script command when triggered.
        */
        class ClickAction_ScriptAction extends ClickAction {
            /**
            * Creates a new instance of a {@link ClickAction} configured to execute a script command when triggered.
            * @param targetFunction - Optional value to instantiate {@link #TargetFunction} with.
            * @param isLiteral - Optional value to instantiate {@link #IsLiteral} with.
            * @param properties - Optional value to instantiate {@link #Properties} bag with.
            * @param state - Optional value to instantiate {@link #State} bag with.
            */
            constructor(targetFunction?: string, isLiteral?: boolean, properties?: {
                [key: string]: any;
            }, state?: string[]);
            /**
            * Gets the fully qualified name of the function to be executed when the action is triggered. The function will be passed a single parameter of type {@link ClickAction} corresponding to this object.
            * @returns {*}
            */
            /**
            * Sets the fully qualified name of the function to be executed when the action is triggered. The function will be passed a single parameter of type {@link ClickAction} corresponding to this object.
            * @param value
            * @example click.TargetFunction = "MyNamespace.HandleClick(clickAction)"
            */
            public TargetFunction : string;
            /**
            * Gets a value which determines if the {@link #TargetFunction} is interpreted as literal script and 'eval'ed instead of called as a function.
            * @returns {*}
            */
            /**
            * Sets a value which determines if the {@link #TargetFunction} is interpreted as literal script and 'eval'ed instead of called as a function.
            * @param value
            */
            public IsLiteral : boolean;
        }
        /**
        * Base class for form elements, consider as abstract.
        */
        class FormItem<T> extends ListItem {
            /**
            *
            * @param id - Optional value to instantiate {@link #Id} with.
            * @param title - Optional value to instantiate {@link #Title} with.
            * @param value - Optional value to instantiate {@link #Value} with.
            * @param properties - Optional value to instantiate {@link #Properties} bag with.
            */
            constructor(id: string, title?: string, value?: T, properties?: {
                [key: string]: any;
            });
            /**
            * Value used as the 'id' attribute of the form element in rendered HTML.
            */
            public InternalName: string;
            /**
            * Value used as the label for the form element.
            */
            public Title: string;
            /**
            * Determines if the form element is required to be set.
            */
            public Required: boolean;
            /**
            * The value of the form element.
            */
            public Value: T;
            /**
            * Gets the Id of the form element. Corresponds to {@link #InternalName}.
            * @returns {string}
            * @constructor
            */
            /**
            * Sets the Id of the form element. Corresponds to {@link #InternalName}.
            * @param value
            * @constructor
            */
            public Id : string;
            public _ensureValue(): void;
        }
        /**
        * Represents a textbox ('<input/>').
        */
        class FormItem_Text extends FormItem<string> {
            /**
            * Creates a new instance of a {@link FormItem}.
            * @param id - Optional value to instantiate {@link #Id} with.
            * @param title - Optional value to instantiate {@link #Title} with.
            * @param value {string} - Optional value to instantiate {@link #Value} with.
            * @param properties - Optional value to instantiate {@link #Properties} bag with.
            */
            constructor(id: string, title?: string, value?: string, properties?: {
                [key: string]: any;
            });
            /**
            * Determines the value of the 'type' attribute (see {@link MobileEntree.Enumerations.InputType}) in the rendered '<input/>' element.
            * @default {@link MobileEntree.Enumerations.InputType.Text}
            */
            public InputType: string;
        }
        /**
        * Represents a multi-line textbox ('<textarea/>').
        */
        class FormItem_Note extends FormItem<string> {
            /**
            * Creates a new instance of a {@link FormItem}.
            * @param id - Optional value to instantiate {@link #Id} with.
            * @param title - Optional value to instantiate {@link #Title} with.
            * @param value {string} - Optional value to instantiate {@link #Value} with.
            * @param numberOfLines - Optional value to instantiate {@link #NumberOfLines} with.
            * @param properties - Optional value to instantiate {@link #Properties} bag with.
            */
            constructor(id: string, title?: string, value?: string, numberOfLines?: number, properties?: {
                [key: string]: any;
            });
            /**
            * Gets the value that determines how many lines the textarea is rendered with.
            * @returns {*}
            */
            /**
            * Sets the value that determines how many lines the textarea is rendered with.
            * @param value
            * @constructor
            */
            public NumberOfLines : number;
        }
        /**
        *  Represents a checkbox ('<input type="checkbox"/>').
        */
        class FormItem_Checkbox extends FormItem<boolean> {
            /**
            * Creates a new instance of a {@link FormItem}.
            * @param id - Optional value to instantiate {@link #Id} with.
            * @param title - Optional value to instantiate {@link #Title} with.
            * @param value {boolean} - Optional value to instantiate {@link #Value} with.
            * @param properties - Optional value to instantiate {@link #Properties} bag with.
            */
            constructor(id: string, title?: string, value?: boolean, properties?: {
                [key: string]: any;
            });
        }
        /**
        * Represents a number picker ('<input type="number"/>').
        */
        class FormItem_Number extends FormItem<number> {
            /**
            * Creates a new instance of a {@link FormItem}.
            * @param id - Optional value to instantiate {@link #Id} with.
            * @param title - Optional value to instantiate {@link #Title} with.
            * @param value {string} - Optional value to instantiate {@link #Value} with.
            * @param numberMetaData - Optional value to instantiate {@link #NumberMetaData} with.
            * @param properties - Optional value to instantiate {@link #Properties} bag with.
            */
            constructor(id: string, title?: string, value?: number, numberMetaData?: SPFieldNumberMetaData, properties?: {
                [key: string]: any;
            });
            /**
            * Gets the value the meta data associated with the item. Determines rendering and functionality of the picker.
            * @returns {*}
            */
            /**
            * Sets the value the meta data associated with the item. Determines rendering and functionality of the picker.
            * @param value {@link MobileEntree.ObjectModel.SPFieldNumberMetaData}
            */
            public NumberMetaData : SPFieldNumberMetaData;
        }
        /**
        * Represents a date picker.
        */
        class FormItem_Date extends FormItem<Date> {
            /**
            * Creates a new instance of a {@link FormItem}.
            * @param id - Optional value to instantiate {@link #Id} with.
            * @param title - Optional value to instantiate {@link #Title} with.
            * @param value {Date} - Optional value to instantiate {@link #Value} with.
            * @param properties - Optional value to instantiate {@link #Properties} bag with.
            */
            constructor(id: string, title?: string, value?: Date, properties?: {
                [key: string]: any;
            });
        }
        /**
        * Represents a time picker.
        */
        class FormItem_Time extends FormItem_Date {
            /**
            * Creates a new instance of a {@link FormItem}.
            * @param id - Optional value to instantiate {@link #Id} with.
            * @param title - Optional value to instantiate {@link #Title} with.
            * @param value {Date} - Optional value to instantiate {@link #Value} with.
            * @param properties - Optional value to instantiate {@link #Properties} bag with.
            */
            constructor(id: string, title?: string, value?: Date, properties?: {
                [key: string]: any;
            });
            public OnSerializing(): void;
        }
        /**
        * Represents a month picker.
        */
        class FormItem_Month extends FormItem_Date {
            /**
            * Creates a new instance of a {@link FormItem}.
            * @param id - Optional value to instantiate {@link #Id} with.
            * @param title - Optional value to instantiate {@link #Title} with.
            * @param value {Date} - Optional value to instantiate {@link #Value} with.
            * @param properties - Optional value to instantiate {@link #Properties} bag with.
            */
            constructor(id: string, title?: string, value?: Date, properties?: {
                [key: string]: any;
            });
        }
        /**
        * Represents a file upload control.
        */
        class FormItem_File extends FormItem<File> {
            /**
            * Creates a new instance of a {@link FormItem}.
            * @param id - Optional value to instantiate {@link #Id} with.
            * @param title - Optional value to instantiate {@link #Title} with.
            * @param properties - Optional value to instantiate {@link #Properties} bag with.
            */
            constructor(id: string, title?: string, properties?: {
                [key: string]: any;
            });
        }
        /**
        * Base class for {@link FormItem} types that are containers. Consider as abstract.
        */
        class FormItem_ItemContainer<T> extends FormItem<string> {
            /**
            * Creates a new instance of a {@link FormItem}.
            * @param id - Optional value to instantiate {@link #Id} with.
            * @param title - Optional value to instantiate {@link #Title} with.
            * @param value {string} - Optional value to instantiate {@link #Value} with.
            * @param items {Array<T>} - Optional value to instantiate {@link #Items} with.
            * @param properties - Optional value to instantiate {@link #Properties} bag with.
            */
            constructor(id: string, title?: string, value?: string, items?: T[], properties?: {
                [key: string]: any;
            });
            /**
            * Gets the collection of items contained by this object.
            * @returns {*}
            */
            public Items : T[];
        }
        /**
        * Base class for radio and list (select) controls. Consider as abstract.
        */
        class FormItem_Choice extends FormItem_ItemContainer<OptionItem> {
            /**
            * Creates a new instance of a {@link FormItem}.
            * @param id - Optional value to instantiate {@link #Id} with.
            * @param title - Optional value to instantiate {@link #Title} with.
            * @param value {string} - Optional value to instantiate {@link #Value} with.
            * @param items {Array<OptionItem>} - Optional value to instantiate {@link #Items} with.
            * @param properties - Optional value to instantiate {@link #Properties} bag with.
            */
            constructor(id: string, title?: string, value?: string, items?: OptionItem[], properties?: {
                [key: string]: any;
            });
        }
        /**
        * Represents a radio button.
        */
        class FormItem_Radio extends FormItem_Choice {
            /**
            * Creates a new instance of a {@link FormItem}.
            * @param id - Optional value to instantiate {@link #Id} with.
            * @param title - Optional value to instantiate {@link #Title} with.
            * @param value {string} - Optional value to instantiate {@link #Value} with.
            * @param items {Array<OptionItem>} - Optional value to instantiate {@link #Items} with.
            * @param properties - Optional value to instantiate {@link #Properties} bag with.
            */
            constructor(id: string, title?: string, value?: string, items?: OptionItem[], properties?: {
                [key: string]: any;
            });
        }
        /**
        * Represents a dropdown list (select).
        */
        class FormItem_Select extends FormItem_Choice {
            /**
            * Creates a new instance of a {@link FormItem}.
            * @param id - Optional value to instantiate {@link #Id} with.
            * @param title - Optional value to instantiate {@link #Title} with.
            * @param value {string} - Optional value to instantiate {@link #Value} with.
            * @param items {Array<OptionItem>} - Optional value to instantiate {@link #Items} with.
            * @param properties - Optional value to instantiate {@link #Properties} bag with.
            */
            constructor(id: string, title?: string, items?: OptionItem[], value?: string, multiple?: boolean, properties?: {
                [key: string]: any;
            });
            /**
            * Gets the value that determines if multiple values can be selected.
            * @returns {boolean}
            */
            /**
            * Sets the value that determines if multiple values can be selected.
            * @param value
            */
            public Multiple : boolean;
            /**
            * Gets the value that determines the size (number of rows) in a multi-select control.
            * @returns {*}
            */
            /**
            * Sets the value that determines the size (number of rows) in a multi-select control.
            * @param value
            */
            public Size : number;
        }
    }
    module Plugins {
        /**
        * Interface which must be implemented by a MobileEntree365 ECMAApplication.
        */
        interface IApplication {
            /**
            *
            * @param scope Contains properties that define the current context.
            * @param output Contains a {@link MobileEntree.ObjectModel.ListView} for creating the current screen. Additional{@link MobileEntree.ObjectModel.ListView} object corresponding to existing Panels may be added.
            */
            Render(scope: ObjectModel.ScopeObject, output: ObjectModel.ListView[]): JQueryPromise<any>;
        }
    }
}
